package utils

import "unicode"

var letter_digit = []*unicode.RangeTable{
	unicode.Letter,
	unicode.Digit,
	{R16: []unicode.Range16{{'_', '_', 1}}},
	{R16: []unicode.Range16{{'-', '-', 1}}},
	{R16: []unicode.Range16{{'.', '.', 1}}},
}

// FormatToFileName 去掉 除了 _-.字母数字以外的字符，替换为_
func FormatToFileName(str string) string {
	if str == "" {
		return "_"
	}

	result := make([]rune, len(str), len(str))

	for i, r := range str {
		if unicode.IsOneOf(letter_digit, r) {
			result[i] = r
		} else {
			result[i] = '_'
		}
	}
	return string(result)
}

// FirstNotEmpty 返回第一个非空字符串
func FirstNotEmpty(s ...string) string {
	if len(s) == 0 {
		return ""
	}
	for _, v := range s {
		if v != "" {
			return v
		}
	}
	return ""
}
